package com.zim.access.service.session;

import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.zim.access.common.chat.Session;
import com.zim.access.common.page.Page;
import com.zim.access.common.page.QueryOptions;
import com.zim.access.domain.session.SessionDo;

/**
 * @author hanyue
 * @version 1.0
 * @date 2021/12/27 上午10:16
 */
public interface SessionService {

    /**
     * 单个会话查询
     */
    Session findById(String id);

    /**
     * 会话列表查询
     */
    Page<Session> findMay(QueryOptions options, Wrapper<SessionDo> queryWrapper);


    /**
     * 通过用户ID查询会话列表
     * where fromId = userId or toId = userId
     */
    Page<Session> searchByUserId(String userId, QueryOptions options);


    /**
     * 通过用户名称模糊搜索会话列表
     */
    Page<Session> searchByUserName(String userName, QueryOptions options);

    /**
     * 创建会话
     */
    Session createSession(Session session);

    /**
     * 删除会话
     */
    boolean deleteSession(String id);

    /**
     * 更新会话
     */
    boolean updateSession(String id, Session session);

    /**
     * 查询单个会话未读记录
     * @return
     */
    Long searchUnReadById(String id);

    /**
     * 查询所有会话未读记录
     */
    Long searchAllUnRead();
}
